clear all
set more off
*capture log close
set logtype text
set matsize 10000
set max_memory 120g

local mydate: di %tdDNCY date(c(current_date), "DMY")

global output 		"O:\returns"
*global data		"D:\ya244a\2016"    				// old FIONA path
global data 		"D:\ready-made\FLEED_TOTAL\2016"
global work			"W:" 
global return_data	"W:\returns\estimation_data"
global dofiles		"W:\data_prep" 
global patent_data 	"W:\data_prep\patent_data"
global ptest_data 	"W:\data_prep\P_tests"


**************************************************************************************

* This file generates the data for the CEM matching for
* Aghion, Akcigit, Hyytinen & Toivanen : 
* A year older, a year wiser (and farther from the frontier):invention rents and human capital depreciation

**************************************************************************************




***************************************************************************************

*log using "${output}\returns_DATAPREP_1_CLEANED`mydate'.log" , replace
/*  
\
()
{}
[]
=
`i'
 >
 <
 |
*/

* run the auxiliary data preparation files

do "${dofiles}\inventors_patstat_11112015.do"

global output 		"O:\returns"
*global data		"D:\ya244a\2016"    				// old FIONA path
global data 		"D:\ready-made\FLEED_TOTAL\2016"
global work			"W:" 
global return_data	"W:\returns\estimation_data"
global dofiles		"W:\data_prep" 
global patent_data 	"W:\data_prep\patent_data"
global ptest_data 	"W:\data_prep\P_tests"


use "${data}\fleed_kokonais_1988.dta"

keep if sukup == "1"

keep vuosi shnro* shtun* sukup ika kansa1 kieli suuralue kunta kuntaryhma maakunta ///
     lvar svatva svatvp svelat telink tyotu tyrtu apvm1 apvm2 suorv yotutk ktutk ututku ///
	 amas1 amas2 ptoim1 ptoim2 saikavv sivs sose syrtun sykstun ///
	 toimiala toimiala2 lv_sykstun hk_sykstun ammattikoodi
     
forvalues i = 1989/1990 {
         append using "${data}\fleed_kokonais_`i'.dta", ///

keep if sukup == "1"

keep vuosi shnro* shtun* sukup ika kansa1 kieli suuralue kunta kuntaryhma maakunta ///
     lvar svatva svatvp svelat telink tyotu tyrtu apvm1 apvm2 suorv yotutk ktutk ututku ///
	 amas1 amas2 ptoim1 ptoim2 saikavv sivs sose syrtun sykstun ///
	 toimiala toimiala2 lv_sykstun hk_sykstun ammattikoodi
        }

* taxable wealth available 1991 - 2005.
forvalues i = 1991/2004 {
         append using "${data}\fleed_kokonais_`i'.dta", ///

keep if sukup == "1"

keep vuosi shnro* shtun* sukup ika kansa1 kieli suuralue kunta kuntaryhma maakunta  ///
     lvar svatva svatvp svelat telink tyotu tyrtu apvm1 apvm2 suorv yotutk ktutk ututku ///
	 amas1 amas2 ptoim1 ptoim2 saikavv sivs sose syrtun sykstun ///
	 toimiala toimiala2 lv_sykstun hk_sykstun ammattikoodi lvar
        }
* NOTE: apvm1 and apvm2 missing 2005-
 
forvalues i = 2005/2012 {
         append using "${data}\fleed_kokonais_`i'.dta", ///
         
keep if sukup == "1"

keep vuosi shnro* shtun* sukup ika kansa1 kieli suuralue kunta kuntaryhma maakunta ///
     lvar svatva svatvp svelat telink tyotu tyrtu apvm1 apvm2 suorv yotutk ktutk ututku ///
	 amas1 amas2 ptoim1 ptoim2 saikavv sivs sose syrtun sykstun ///
	 toimiala toimiala2 lv_sykstun hk_sykstun ammattikoodi
        }
		
*use "W:\fleed_88_12.dta", clear
* check data for duplicate, drop duplicates
duplicates tag shtun_lyh vuosi, gen(dupl_shtun_vuosi)
tab dupl_shtun_vuosi
drop if dupl_shtun_vuosi > 0

* match inventors
gen AppYear 		= vuosi
tostring AppYear, replace

*gen shtun 			= shtun_lyh

merge 1:m shtun_lyh vuosi using "${patent_data}\patstat_all.dta"
rename _merge merge_patstat

* drop those patents that are not matched
drop if merge_patstat == 2
* generate inventor dummy
gen inv_1			= 0
replace inv_1		= 1 if merge_patstat == 3

bysort shtun_lyh: egen inventor = max(inv_1)

replace pat_count_y = 0 if pat_count_y == .

sort shtun_lyh vuosi
bysort shtun_lyh: gen pat_count_cum	 	= sum(pat_count_y)

* deflate and form income variables
* deflator
* source: see 030_khi_tau_103.xlsx
* 2014 = 1
gen cpi					= .
replace cpi				= 0.57801	if vuosi == 1988
replace cpi				= 0.61623	if vuosi == 1989
replace cpi				= 0.653403	if vuosi == 1990
replace cpi				= 0.680628	if vuosi == 1991
replace cpi				= 0.697906	if vuosi == 1992
replace cpi				= 0.712565	if vuosi == 1993
replace cpi				= 0.720419	if vuosi == 1994
replace cpi				= 0.727749	if vuosi == 1995
replace cpi				= 0.731937	if vuosi == 1996
replace cpi				= 0.740838	if vuosi == 1997
replace cpi				= 0.751309	if vuosi == 1998
replace cpi				= 0.760209	if vuosi == 1999
replace cpi				= 0.785864	if vuosi == 2000
replace cpi				= 0.805759	if vuosi == 2001
replace cpi				= 0.818325	if vuosi == 2002
replace cpi				= 0.825654	if vuosi == 2003
replace cpi				= 0.827225	if vuosi == 2004
replace cpi				= 0.834555	if vuosi == 2005
replace cpi				= 0.849215	if vuosi == 2006
replace cpi				= 0.870157	if vuosi == 2007
replace cpi				= 0.905759	if vuosi == 2008
replace cpi				= 0.905759	if vuosi == 2009
replace cpi				= 0.916754	if vuosi == 2010
replace cpi				= 0.948691	if vuosi == 2011
replace cpi				= 0.975393	if vuosi == 2012
replace cpi				= 0.989529	if vuosi == 2013

* wage
gen tyrtu_defl		= 0
replace tyrtu_defl 	= tyrtu / cpi if tyrtu != .
gen tyotu_defl		= 0
replace tyotu_defl 	= tyotu / cpi if tyotu != .
gen wage 			= tyotu_defl + tyrtu_defl
* include capital income 
gen svatvp_defl		= 0
replace svatvp_defl = svatvp / cpi if svatvp != .
gen earnings		= wage + svatvp_defl

* generate index within individual
destring amas2, gen(amas2_var)
destring amas1, gen(amas1_var)

sort shnro vuosi
bysort shnro: egen vuosi_min = min(vuosi) 			if (amas2_var !=. | amas1_var !=.)
gen ind_vuosi 		= vuosi - vuosi_min + 1 		if (amas2_var !=. | amas1_var !=.)

* match to Finnish defense forces IQ test data
*use "W:\fleedinv_88_12.dta", clear
*drop p_test_year pluku kuv* san* las* p_test_all*
*merge m:1 shnro using "${ptest_data}\p_tests.dta"

*rename _merge merge_iq
*drop if merge_iq == 2
* coworker status
* indicators for coworker
* impute missing sose values
sort shnro vuosi
replace sose = sose[_n + 7] if vuosi == 1988 & shnro == shnro[_n + 7] & vuosi[_n + 7] == 1995
replace sose = sose[_n + 6] if vuosi == 1989 & shnro == shnro[_n + 6] & vuosi[_n + 6] == 1995
replace sose = sose[_n + 5] if vuosi == 1990 & shnro == shnro[_n + 5] & vuosi[_n + 5] == 1995
replace sose = sose[_n + 4] if vuosi == 1991 & shnro == shnro[_n + 4] & vuosi[_n + 4] == 1995
replace sose = sose[_n + 3] if vuosi == 1992 & shnro == shnro[_n + 3] & vuosi[_n + 3] == 1995
replace sose = sose[_n + 2] if vuosi == 1993 & shnro == shnro[_n + 2] & vuosi[_n + 2] == 1995
replace sose = sose[_n + 1] if vuosi == 1994 & shnro == shnro[_n + 1] & vuosi[_n + 1] == 1995

replace sose = sose[_n - 1] if vuosi == 1996 & shnro == shnro[_n - 1] & vuosi[_n - 1] == 1995
replace sose = sose[_n - 2] if vuosi == 1997 & shnro == shnro[_n - 2] & vuosi[_n - 2] == 1995
replace sose = sose[_n - 3] if vuosi == 1998 & shnro == shnro[_n - 3] & vuosi[_n - 3] == 1995
replace sose = sose[_n - 4] if vuosi == 1999 & shnro == shnro[_n - 4] & vuosi[_n - 4] == 1995

replace sose = sose[_n - 1] if vuosi == 2001 & shnro == shnro[_n - 1] & vuosi[_n - 1] == 2000
replace sose = sose[_n - 2] if vuosi == 2002 & shnro == shnro[_n - 2] & vuosi[_n - 2] == 2000
replace sose = sose[_n - 3] if vuosi == 2003 & shnro == shnro[_n - 3] & vuosi[_n - 3] == 2000

replace sose = sose[_n - 1] if vuosi == 2011 & shnro == shnro[_n - 1] & vuosi[_n - 1] == 2010
replace sose = sose[_n - 2] if vuosi == 2012 & shnro == shnro[_n - 2] & vuosi[_n - 2] == 2010

gen soc_status						= substr(sose,1,1)
gen soc_status2						= substr(sose,1,2)

destring soc_status, gen(soc_status3)

*bysort inventor: tab soc_status2
*bysort inventor: tab sose
*tab soc_status2 if inv_1 == 1

bysort syrtun vuosi: 				egen inv_firm_count		= total(inv_1)
bysort sykstun vuosi:		 		egen inv_plant_count	= total(inv_1)
bysort syrtun soc_status vuosi: 	egen inv_sose_count		= total(inv_1)
*bysort syrtun edu_lev vuosi:	 	egen inv_edu_count		= total(inv_1)

replace inv_firm_count				= . if syrtun == ""
replace inv_plant_count				= . if sykstun == ""
replace inv_sose_count				= . if syrtun == ""
*replace inv_edu_count				= . if syrtun == ""


* NOTE: a coworker is not allowed to be an inventor at any point in time
global cows firm plant sose 
gen cw_sum 							= .
replace cw_sum 						= 0 if soc_status3 != .

foreach i of global cows {
           gen cw_`i'                              = .
           replace cw_`i'                  = 0 if syrtun != ""
           replace cw_`i'                  = 1 if inv_`i'_count >= 1 & inventor == 0 & inv_`i'_count != . & syrtun != ""
           replace cw_sum                  = cw_sum + cw_`i'
           sort shnro vuosi
           bysort shnro: gen  cw_`i'_cum           = sum(cw_`i')
           } 
		   
gen syrtun_miss_d                       = 0
replace syrtun_miss_d           = 1 if syrtun == ""

bysort shnro: gen syrtun_miss_cum               = sum(syrtun_miss_d)    
         
gen cw_imp                      = .
replace cw_imp          = 0 if syrtun != "" & cw_sose != .
replace cw_imp          = 1 if cw_sose != . & (vuosi < 1995 | vuosi == 1996 | vuosi == 1997 | vuosi == 1998 | vuosi == 1999 | vuosi == 2001 | vuosi == 2002 | vuosi == 2003 |  vuosi > 2010)

bysort shnro: gen  cw_imp_cum   = sum(cw_imp)

gen cw_edu_imp                  = .
replace cw_edu_imp              = 0 if syrtun != "" & cw_edu != .
replace cw_edu_imp              = 1 if cw_edu != . & (vuosi < 1995 | vuosi == 1996 | vuosi == 1997 | vuosi == 1998 | vuosi == 1999 | vuosi == 2001 | vuosi == 2002 | vuosi == 2003 |  vuosi > 2010)

bysort shnro: gen  cw_edu_imp_cum       = sum(cw_edu_imp)

                 
foreach i of global cows {
         bysort shnro: egen  cw_`i'_max          = max(cw_`i'_cum)
         }       

gen noncowinv                           = 0
replace noncowinv                       = 1 if  cw_sum == 0

gen sose_mngt_sr                      	= .
replace sose_mngt_sr           			= 0 if soc_status3 != .
replace sose_mngt_sr           			= 1 if soc_status2 == "31" 

gen sose_sr                             = .
replace sose_sr                         = 0 if soc_status3 != .
replace sose_sr                         = 1 if soc_status == "3" & soc_status2 != "31" & sose_mngt_sr == 0
 
gen sose_mngt_jr                        = .
replace sose_mngt_jr            		= 0 if soc_status3 != .
replace sose_mngt_jr            		= 1 if soc_status2 == "41"

gen sose_jr                             = .
replace sose_jr                         = 0 if soc_status3 != .
replace sose_jr                         = 1 if soc_status == "4" & soc_status != "41" & sose_mngt_jr == 0

gen sose_bc                            	= .
replace sose_bc                         = 0 if soc_status3 != .
replace sose_bc                         = 1 if soc_status == "5"

gen sose_agr                            = .
replace sose_agr                        = 0 if soc_status3 != .
replace sose_agr                        = 1 if soc_status == "1" 

gen sose_entr                           = .
replace sose_entr                       = 0 if soc_status3 != .
replace sose_entr                       = 1 if soc_status == "2"
 
gen sose_oth                            = .
replace sose_oth                        = 0 if soc_status3 != .
replace sose_oth                        = 1 if soc_status3 != . & (soc_status == "6" | soc_status == "7" | soc_status == "8" | soc_status == "9") 

* keep only necessary variables
keep vuosi shnro shtun_lyh syrtun sykstun ika toimiala suorv ututku hk_sykstun suuralue /// 
pat_count_y inv_1 inventor wage earnings  /// 
sose_mngt_sr sose_sr sose_mngt_jr sose_jr sose_bc sose_entr ///
family_size_max ptoim1 fwd_cits5_max 
* generate data for panel regressions
save "${return_data}\returns_DATAPREP_1_CLEANED.dta", replace
*log close		   
